home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / asm / adisv1_3.lha / src / fpu_opcodes.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-09-24  |  9.7 KB  |  213 lines

  1. /*
  2.  * Change history
  3.  * $Log:    fpu_opcodes.c,v $
  4.  * Revision 3.0  93/09/24  17:53:57  Martin_Apel
  5.  * New feature: Added extra 68040 FPU opcodes
  6.  * 
  7.  * Revision 2.1  93/07/18  22:55:54  Martin_Apel
  8.  * *** empty log message ***
  9.  * 
  10.  * Revision 2.0  93/07/01  11:53:57  Martin_Apel
  11.  * *** empty log message ***
  12.  * 
  13.  * Revision 1.6  93/06/16  20:27:22  Martin_Apel
  14.  * Minor mod.: Removed #ifdef FPU_VERSION and #ifdef MACHINE68020
  15.  * 
  16.  * Revision 1.5  93/06/03  20:27:05  Martin_Apel
  17.  * 
  18.  * 
  19.  */
  20.  
  21. #include <exec/types.h>
  22. #include <stdio.h>
  23. #include "defs.h"
  24.  
  25. static char rcsid [] = "$Id: fpu_opcodes.c,v 3.0 93/09/24 17:53:57 Martin_Apel Exp $";
  26.  
  27. struct opcode_entry fpu_opcode_table [] =
  28. {
  29. { std_fpu  , "FMOVE"  ,       0, 0,   0 },        /* 000 0000 */
  30. { std_fpu  , "FINT"   , SNG_ALL, 0,   0 },        /* 000 0001 */
  31. { std_fpu  , "FSINH"  , SNG_ALL, 0,   0 },        /* 000 0010 */
  32. { std_fpu  , "FINTRZ" , SNG_ALL, 0,   0 },        /* 000 0011 */
  33. { std_fpu  , "FSQRT"  , SNG_ALL, 0,   0 },        /* 000 0100 */
  34. { illegal  ,  0       ,       0, 0,   0 },        /* 000 0101 */
  35. { std_fpu  , "FLOGNP1", SNG_ALL, 0,   0 },        /* 000 0110 */
  36. { illegal  ,  0       ,       0, 0,   0 },        /* 000 0111 */
  37. { std_fpu  , "FETOXM1", SNG_ALL, 0,   0 },        /* 000 1000 */
  38. { std_fpu  , "FTANH"  , SNG_ALL, 0,   0 },        /* 000 1001 */
  39. { std_fpu  , "FATAN"  , SNG_ALL, 0,   0 },        /* 000 1010 */
  40. { illegal  ,  0       ,       0, 0,   0 },        /* 000 1011 */
  41. { std_fpu  , "FASIN"  , SNG_ALL, 0,   0 },        /* 000 1100 */
  42. { std_fpu  , "FATANH" , SNG_ALL, 0,   0 },        /* 000 1101 */
  43. { std_fpu  , "FSIN"   , SNG_ALL, 0,   0 },        /* 000 1110 */
  44. { std_fpu  , "FTAN"   , SNG_ALL, 0,   0 },        /* 000 1111 */
  45. { std_fpu  , "FETOX"  , SNG_ALL, 0,   0 },        /* 001 0000 */
  46. { std_fpu  , "FTWOTOX", SNG_ALL, 0,   0 },        /* 001 0001 */
  47. { std_fpu  , "FTENTOX", SNG_ALL, 0,   0 },        /* 001 0010 */
  48. { illegal  ,  0       ,       0, 0,   0 },        /* 001 0011 */
  49. { std_fpu  , "FLOGN"  , SNG_ALL, 0,   0 },        /* 001 0100 */
  50. { std_fpu  , "FLOG10" , SNG_ALL, 0,   0 },        /* 001 0101 */
  51. { std_fpu  , "FLOG2"  , SNG_ALL, 0,   0 },        /* 001 0110 */
  52. { illegal  ,  0       ,       0, 0,   0 },        /* 001 0111 */
  53. { std_fpu  , "FABS"   , SNG_ALL, 0,   0 },        /* 001 1000 */
  54. { std_fpu  , "FCOSH"  , SNG_ALL, 0,   0 },        /* 001 1001 */
  55. { std_fpu  , "FNEG"   , SNG_ALL, 0,   0 },        /* 001 1010 */
  56. { illegal  ,  0       ,       0, 0,   0 },        /* 001 1011 */
  57. { std_fpu  , "FACOS"  , SNG_ALL, 0,   0 },        /* 001 1100 */
  58. { std_fpu  , "FCOS"   , SNG_ALL, 0,   0 },        /* 001 1101 */
  59. { std_fpu  , "FGETEXP", SNG_ALL, 0,   0 },        /* 001 1110 */
  60. { std_fpu  , "FGETMAN", SNG_ALL, 0,   0 },        /* 001 1111 */
  61. { std_fpu  , "FDIV"   ,       0, 0,   0 },        /* 010 0000 */
  62. { std_fpu  , "FMOD"   ,       0, 0,   0 },        /* 010 0001 */
  63. { std_fpu  , "FADD"   ,       0, 0,   0 },        /* 010 0010 */
  64. { std_fpu  , "FMUL"   ,       0, 0,   0 },        /* 010 0011 */
  65. { std_fpu  , "FSGLDIV",       0, 0,   0 },        /* 010 0100 */
  66. { std_fpu  , "FREM"   ,       0, 0,   0 },        /* 010 0101 */
  67. { std_fpu  , "FSCALE" ,       0, 0,   0 },        /* 010 0110 */
  68. { std_fpu  , "FSGLMUL",       0, 0,   0 },        /* 010 0111 */
  69. { std_fpu  , "FSUB"   ,       0, 0,   0 },        /* 010 1000 */
  70. { illegal  ,  0       ,       0, 0,   0 },        /* 010 1001 */
  71. { illegal  ,  0       ,       0, 0,   0 },        /* 010 1010 */
  72. { illegal  ,  0       ,       0, 0,   0 },        /* 010 1011 */
  73. { illegal  ,  0       ,       0, 0,   0 },        /* 010 1100 */
  74. { illegal  ,  0       ,       0, 0,   0 },        /* 010 1101 */
  75. { illegal  ,  0       ,       0, 0,   0 },        /* 010 1110 */
  76. { illegal  ,  0       ,       0, 0,   0 },        /* 010 1111 */
  77. { fsincos  , "FSINCOS",       0, 0,   0 },        /* 011 0000 */
  78. { fsincos  , "FSINCOS",       1, 0,   0 },        /* 011 0001 */
  79. { fsincos  , "FSINCOS",       2, 0,   0 },        /* 011 0010 */
  80. { fsincos  , "FSINCOS",       3, 0,   0 },        /* 011 0011 */
  81. { fsincos  , "FSINCOS",       4, 0,   0 },        /* 011 0100 */
  82. { fsincos  , "FSINCOS",       0, 0,   0 },        /* 011 0101 */
  83. { fsincos  , "FSINCOS",       6, 0,   0 },        /* 011 0110 */
  84. { fsincos  , "FSINCOS",       7, 0,   0 },        /* 011 0111 */
  85. { std_fpu  , "FCMP"   ,       0, 0,   0 },        /* 011 1000 */
  86. { illegal  ,  0       ,       0, 0,   0 },        /* 011 1001 */
  87. { std_fpu  , "FTST"   , SNG_ALL, 0,   0 },        /* 011 1010 */
  88. { illegal  ,  0       ,       0, 0,   0 },        /* 011 1011 */
  89. { illegal  ,  0       ,       0, 0,   0 },        /* 011 1100 */
  90. { illegal  ,  0       ,       0, 0,   0 },        /* 011 1101 */
  91. { illegal  ,  0       ,       0, 0,   0 },        /* 011 1110 */
  92. { illegal  ,  0       ,       0, 0,   0 },        /* 011 1111 */
  93.  
  94. { std_fpu  , "FSMOVE" ,       0, 0,   0 },        /* 100 0000 */
  95. { std_fpu  , "FSSQRT" , SNG_ALL, 0,   0 },        /* 100 0001 */
  96. { illegal  ,  0       ,       0, 0,   0 },        /* 100 0010 */
  97. { illegal  ,  0       ,       0, 0,   0 },        /* 100 0011 */
  98. { std_fpu  , "FDMOVE" ,       0, 0,   0 },        /* 100 0100 */
  99. { std_fpu  , "FDSQRT" , SNG_ALL, 0,   0 },        /* 100 0101 */
  100. { illegal  ,  0       ,       0, 0,   0 },        /* 100 0110 */
  101. { illegal  ,  0       ,       0, 0,   0 },        /* 100 0111 */
  102. { illegal  ,  0       ,       0, 0,   0 },        /* 100 1000 */
  103. { illegal  ,  0       ,       0, 0,   0 },        /* 100 1001 */
  104. { illegal  ,  0       ,       0, 0,   0 },        /* 100 1010 */
  105. { illegal  ,  0       ,       0, 0,   0 },        /* 100 1011 */
  106. { illegal  ,  0       ,       0, 0,   0 },        /* 100 1100 */
  107. { illegal  ,  0       ,       0, 0,   0 },        /* 100 1101 */
  108. { illegal  ,  0       ,       0, 0,   0 },        /* 100 1110 */
  109. { illegal  ,  0       ,       0, 0,   0 },        /* 100 1111 */
  110. { illegal  ,  0       ,       0, 0,   0 },        /* 101 0000 */
  111. { illegal  ,  0       ,       0, 0,   0 },        /* 101 0001 */
  112. { illegal  ,  0       ,       0, 0,   0 },        /* 101 0010 */
  113. { illegal  ,  0       ,       0, 0,   0 },        /* 101 0011 */
  114. { illegal  ,  0       ,       0, 0,   0 },        /* 101 0100 */
  115. { illegal  ,  0       ,       0, 0,   0 },        /* 101 0101 */
  116. { illegal  ,  0       ,       0, 0,   0 },        /* 101 0110 */
  117. { illegal  ,  0       ,       0, 0,   0 },        /* 101 0111 */
  118. { std_fpu  , "FSABS"  , SNG_ALL, 0,   0 },        /* 101 1000 */
  119. { illegal  ,  0       ,       0, 0,   0 },        /* 101 1001 */
  120. { std_fpu  , "FSNEG"  , SNG_ALL, 0,   0 },        /* 101 1010 */
  121. { illegal  ,  0       ,       0, 0,   0 },        /* 101 1011 */
  122. { std_fpu  , "FDABS"  , SNG_ALL, 0,   0 },        /* 101 1100 */
  123. { illegal  ,  0       ,       0, 0,   0 },        /* 101 1101 */
  124. { std_fpu  , "FDNEG"  , SNG_ALL, 0,   0 },        /* 101 1110 */
  125. { illegal  ,  0       ,       0, 0,   0 },        /* 101 1111 */
  126. { std_fpu  , "FSDIV"  ,       0, 0,   0 },        /* 110 0000 */
  127. { illegal  ,  0       ,       0, 0,   0 },        /* 110 0001 */
  128. { std_fpu  , "FSADD"  ,       0, 0,   0 },        /* 110 0010 */
  129. { std_fpu  , "FSMUL"  ,       0, 0,   0 },        /* 110 0011 */
  130. { std_fpu  , "FDDIV"  ,       0, 0,   0 },        /* 110 0100 */
  131. { illegal  ,  0       ,       0, 0,   0 },        /* 110 0101 */
  132. { std_fpu  , "FDADD"  ,       0, 0,   0 },        /* 110 0110 */
  133. { std_fpu  , "FDMUL"  ,       0, 0,   0 },        /* 110 0111 */
  134. { std_fpu  , "FSSUB"  ,       0, 0,   0 },        /* 110 1000 */
  135. { illegal  ,  0       ,       0, 0,   0 },        /* 110 1001 */
  136. { illegal  ,  0       ,       0, 0,   0 },        /* 110 1010 */
  137. { illegal  ,  0       ,       0, 0,   0 },        /* 110 1011 */
  138. { std_fpu  , "FDSUB"  ,       0, 0,   0 },        /* 110 1100 */
  139. { illegal  ,  0       ,       0, 0,   0 },        /* 110 1101 */
  140. { illegal  ,  0       ,       0, 0,   0 },        /* 110 1110 */
  141. { illegal  ,  0       ,       0, 0,   0 },        /* 110 1111 */
  142. { illegal  ,  0       ,       0, 0,   0 },        /* 111 0000 */
  143. { illegal  ,  0       ,       0, 0,   0 },        /* 111 0001 */
  144. { illegal  ,  0       ,       0, 0,   0 },        /* 111 0010 */
  145. { illegal  ,  0       ,       0, 0,   0 },        /* 111 0011 */
  146. { illegal  ,  0       ,       0, 0,   0 },        /* 111 0100 */
  147. { illegal  ,  0       ,       0, 0,   0 },        /* 111 0101 */
  148. { illegal  ,  0       ,       0, 0,   0 },        /* 111 0110 */
  149. { illegal  ,  0       ,       0, 0,   0 },        /* 111 0111 */
  150. { illegal  ,  0       ,       0, 0,   0 },        /* 111 1000 */
  151. { illegal  ,  0       ,       0, 0,   0 },        /* 111 1001 */
  152. { illegal  ,  0       ,       0, 0,   0 },        /* 111 1010 */
  153. { illegal  ,  0       ,       0, 0,   0 },        /* 111 1011 */
  154. { illegal  ,  0       ,       0, 0,   0 },        /* 111 1100 */
  155. { illegal  ,  0       ,       0, 0,   0 },        /* 111 1101 */
  156. { illegal  ,  0       ,       0, 0,   0 },        /* 111 1110 */
  157. { illegal  ,  0       ,       0, 0,   0 }         /* 111 1111 */
  158.  
  159. };
  160.  
  161. char *xfer_size [] = { ".L",
  162.                        ".S",
  163.                        ".X",
  164.                        ".P",
  165.                        ".W",
  166.                        ".D",
  167.                        ".B",
  168.                        ".P",  };
  169.  
  170. short sizes [] = { ACC_LONG   | ACC_DATA,
  171.                    ACC_LONG   | ACC_DATA,
  172.                    ACC_EXTEND | ACC_DATA,
  173.                    ACC_EXTEND | ACC_DATA,
  174.                    ACC_WORD   | ACC_DATA,
  175.                    ACC_DOUBLE | ACC_DATA,
  176.                    ACC_BYTE   | ACC_DATA,
  177.                    ACC_EXTEND | ACC_DATA };
  178.  
  179. char *fpu_conditions [] = {
  180.   "F",
  181.   "EQ",
  182.   "OGT",
  183.   "OGE",
  184.   "OLT",
  185.   "OLE",
  186.   "OGL",
  187.   "OR",
  188.   "UN",        /* 8 */
  189.   "UEQ",
  190.   "UGT",
  191.   "UGE",
  192.   "ULT",
  193.   "ULE",
  194.   "NE",
  195.   "T",
  196.   "SF",        /* 16 */
  197.   "SEQ",
  198.   "GT",
  199.   "GE",
  200.   "LT",
  201.   "LE",
  202.   "GL",
  203.   "GLE",
  204.   "NGLE",      /* 24 */
  205.   "NGL",
  206.   "NLE",
  207.   "NLT",
  208.   "NGE",
  209.   "NGT",
  210.   "SNE",
  211.   "ST"
  212. };
  213.